#include <bits/stdc++.h>

using namespace std;

long long modulo=1000000007;

std::vector<int> order[27],pre(1010);	//记录字符出现的位置与前缀数量

int main(int argc, char const *argv[])
{
	string a,b;
	cin>>a>>b;
	int cnt=0,asize=a.size(),bsize=b.size();
	for (int i = 0; i < bsize; ++i)		//初始化，记录每个字符出现的位置
	{
		order[b[i]-'a'].emplace_back(i);
	}

	while(cnt<asize){
		int c=a[cnt]-'a';
		int size=order[c].size();
		long long add[1010]={0};	//临时存储变化
		for (int i = 0; i < size; ++i)
		{
			int num=order[c][i];
			if(num==0){
				++add[num+1];
			}else{
				add[num+1]+=pre[num];
			}
		}
		for (int i = 0; i < size; ++i)	//更新
		{
			int num=order[c][i];
			pre[num+1]+=add[num+1];
			pre[num+1]%=modulo;
		}
		cnt++;
	}

	printf("%lld\n", pre[bsize]%modulo);
	return 0;
}